<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html" charset="UTF-8">
<title>IImageLine (PNGJ 2.1.0-SNAPSHOT API)</title>
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
</head>
<body>
<script type="text/javascript"><!--
    if (location.href.indexOf('is-external=true') == -1) {
        parent.document.title="IImageLine (PNGJ 2.1.0-SNAPSHOT API)";
    }
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar_top">
<!--   -->
</a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/IImageLine.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../ar/com/hjg/pngj/IdatSet.html" title="class in ar.com.hjg.pngj"><span class="strong">Prev Class</span></a></li>
<li><a href="../../../../ar/com/hjg/pngj/IImageLineArray.html" title="interface in ar.com.hjg.pngj"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?ar/com/hjg/pngj/IImageLine.html" target="_top">Frames</a></li>
<li><a href="IImageLine.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li>
</ul>
</div>
<a name="skip-navbar_top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">ar.com.hjg.pngj</div>
<h2 title="Interface IImageLine" class="title">Interface IImageLine</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Known Implementing Classes:</dt>
<dd><a href="../../../../ar/com/hjg/pngj/pixels/ImageLineARGBbi.html" title="class in ar.com.hjg.pngj.pixels">ImageLineARGBbi</a>, <a href="../../../../ar/com/hjg/pngj/pixels/ImageLineBufferedImage.html" title="class in ar.com.hjg.pngj.pixels">ImageLineBufferedImage</a>, <a href="../../../../ar/com/hjg/pngj/ImageLineByte.html" title="class in ar.com.hjg.pngj">ImageLineByte</a>, <a href="../../../../ar/com/hjg/pngj/ImageLineInt.html" title="class in ar.com.hjg.pngj">ImageLineInt</a></dd>
</dl>
<hr>
<br>
<pre>public interface <span class="strong">IImageLine</span></pre>
<div class="block">General format-translated image line.
 <p>
 The methods from this interface provides translation from/to PNG raw unfiltered pixel data, for
 each image line. This doesn't make any assumptions of underlying storage.
 <p>
 The user of this library will not normally use this methods, but instead will cast to a more
 concrete implementation, as <a href="../../../../ar/com/hjg/pngj/ImageLineInt.html" title="class in ar.com.hjg.pngj"><code>ImageLineInt</code></a> or <a href="../../../../ar/com/hjg/pngj/ImageLineByte.html" title="class in ar.com.hjg.pngj"><code>ImageLineByte</code></a> with its methods for
 accessing the pixel values.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method_summary">
<!--   -->
</a>
<h3>Method Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span>Methods</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../ar/com/hjg/pngj/IImageLine.html#endReadFromPngRaw()">endReadFromPngRaw</a></strong>()</code>
<div class="block">This is called when the read for the line has been completed (eg for interlaced).</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../ar/com/hjg/pngj/IImageLine.html#readFromPngRaw(byte[], int, int, int)">readFromPngRaw</a></strong>(byte[]&nbsp;raw,
              int&nbsp;len,
              int&nbsp;offset,
              int&nbsp;step)</code>
<div class="block">Extract pixels from a raw unlfilterd PNG row.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../ar/com/hjg/pngj/IImageLine.html#writeToPngRaw(byte[])">writeToPngRaw</a></strong>(byte[]&nbsp;raw)</code>
<div class="block">Writes the line to a PNG raw byte array, in the unfiltered PNG format Notice that the first
 byte is the filter type, you should write it only if you know it.</div>
</td>
</tr>
</table>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method_detail">
<!--   -->
</a>
<h3>Method Detail</h3>
<a name="readFromPngRaw(byte[], int, int, int)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>readFromPngRaw</h4>
<pre>void&nbsp;readFromPngRaw(byte[]&nbsp;raw,
                  int&nbsp;len,
                  int&nbsp;offset,
                  int&nbsp;step)</pre>
<div class="block">Extract pixels from a raw unlfilterd PNG row. Len is the total amount of bytes in the array,
 including the first byte (filter type)
 
 offset and step (0 and 1 for non interlaced) are in PIXELS
 
 Notice that when step!=1 the data is partial, this method will be called several times</div>
</li>
</ul>
<a name="endReadFromPngRaw()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>endReadFromPngRaw</h4>
<pre>void&nbsp;endReadFromPngRaw()</pre>
<div class="block">This is called when the read for the line has been completed (eg for interlaced). It's called
 exactly once for each line. This is provided in case the class needs to to some postprocessing.</div>
</li>
</ul>
<a name="writeToPngRaw(byte[])">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>writeToPngRaw</h4>
<pre>void&nbsp;writeToPngRaw(byte[]&nbsp;raw)</pre>
<div class="block">Writes the line to a PNG raw byte array, in the unfiltered PNG format Notice that the first
 byte is the filter type, you should write it only if you know it.</div>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar_bottom">
<!--   -->
</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/IImageLine.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../ar/com/hjg/pngj/IdatSet.html" title="class in ar.com.hjg.pngj"><span class="strong">Prev Class</span></a></li>
<li><a href="../../../../ar/com/hjg/pngj/IImageLineArray.html" title="interface in ar.com.hjg.pngj"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?ar/com/hjg/pngj/IImageLine.html" target="_top">Frames</a></li>
<li><a href="IImageLine.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li>
</ul>
</div>
<a name="skip-navbar_bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small>Copyright &#169; 2014. All rights reserved.</small></p>
</body>
</html>
